import {$post,$get} from "@/common/api/request.js"
export default{
	state:{
		checkedIdx:-1,
		addrlist:[/* {
					username:'张三丰',
					phone:'13844445555',
					city:'上海',
					region:'黄浦区',
					detail:'黄浦江畔',
					isdefault:true
				} */]
	},
	getters:{
		// 返回一条订单页需要的地址信息
		orderaddr(state){
			// 有指定的给指定的，没有给默认的，都没有或没数据呢？
			if (state.checkedIdx>=0) {
				return state.addrlist[state.checkedIdx]
			}else{
				for (let i = 0; i < state.addrlist.length; i++) {
					if (state.addrlist[i].isdefault) {
						return state.addrlist[i]
					}
				}
			}
		}
	},
	mutations:{
		// 从数据端请求数据，初始化state中的addrlist
		initaddr(state,initobj){
			state.addrlist = initobj;
		},
		// 有下标则先删除再新增，下标为-1则直接新增一条地址数据
		doadd(state,addobj){
			if (addobj.idx>=0) {
				state.addrlist.splice(addobj.idx,1)
			}
			state.addrlist.push(addobj);
		},
		// 改变指定地址，自动切换数据，驱动页面改变
		docheck(state,idx){
			state.checkedIdx = idx;
		},
		// 设置当前下标数据为默认地址，其它数据改为FALSE
		dodefault(state,idx){
			// state.addrlist[idx].isdefault = true;
			state.addrlist.map((v,i)=>{
				/* if (i==idx) {
					v.isdefault = true
				}else{
					v.isdefault = false
				} 直接用下面的更简洁*/
				v.isdefault = i==idx;
			})
		}
	},
	actions:{
		// 提交地址数据
		doaddact({commit},addobj){
			$post("/1.1/classes/addrs",addobj).then(({objectId})=>{
				commit('doadd',{...addobj,objectId})
			})
		},
		// 获取地址数据
		getact(contxt){
			// 这里应该是根据用户ID来查的
			// where idx<0 的写法，如果是data类型要复杂一些
			let gurl = `/1.1/classes/addrs?where={"idx":{"$lt":0}}`;
			$get(gurl).then(({results})=>{
				// console.log("res: " + JSON.stringify(results));
				contxt.commit('initaddr',results)
			})
		}
	}
}